home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 15 / BBS in a box XV-2.iso / Files II / Prog / D-G / Graphics 1.0.sit / GRAPHICS 1.0 / GRAF Arcade / GRAF.Arcade.code < prev    next >
Encoding:
Text File  |  1995-05-17  |  7.1 KB  |  262 lines  |  [TEXT/PJMM]

  1. program GRAFArcade;{we could use a modified sprite array for this program for life, punching, etc. but for only two guys}
  2.                                     {it isn't worth the trouble}
  3.     uses
  4.         graphics;
  5.  
  6.     var
  7.         temp: integer;
  8.         l: longint;
  9.         whatkeyhit: integer;
  10.         greenlife, bluelife: integer;
  11.         aa, ab: rect;{aa=the entire cicn size, ab=the size to use when testing for collisions}
  12.         greenwalkright, greenwalkleft: array[0..3] of Face;
  13.         greenpunchright, greenpunchleft: array[0..2] of Face;
  14.         greenhurtright, greenhurtleft: Face;
  15.         bluewalkright, bluewalkleft: array[0..3] of Face;
  16.         bluepunchright, bluepunchleft: array[0..2] of Face;
  17.         bluehurtright, bluehurtleft: Face;
  18.         greenpowerbar, bluepowerbar: Face;
  19.         greenpunch, bluepunch: integer;
  20.         greenleftright, blueleftright: boolean;{each of these variables tells whether the guy is facing right or left.  True is right}
  21.                                                         {false means that guy is facing left.}
  22.     procedure getkey; {feel free to copy and use this keyboard strobing routine in your programs!!!!!!!}
  23.         var
  24.             theEvent: EventRecord;
  25.     begin
  26.         whatkeyhit := 0;
  27.         if GetOSEvent(keyDownMask + autoKeyMask, theEvent) then
  28.             begin
  29.                 case char(bitand(theEvent.message, charCodeMask)) of
  30.                     'd', 'D': 
  31.                         whatkeyhit := 1;{green guy walk left}
  32.                     'f', 'F': 
  33.                         whatkeyhit := 2;{green guy walk right}
  34.                     'g', 'G': 
  35.                         whatkeyhit := 3;{green guy punch}
  36.                     'j', 'J': 
  37.                         whatkeyhit := 4;{blue guy walk left}
  38.                     'k', 'K': 
  39.                         whatkeyhit := 5;{blue guy walk right}
  40.                     'h', 'H': 
  41.                         whatkeyhit := 6;{blue guy punch}
  42.                     otherwise
  43.                 end;
  44.             end;
  45.     end;
  46.  
  47.     procedure setupgreenguy (var me: sprite);
  48.     begin
  49.         me.mode := 0;{this line is not really neccessary, since all variables are set to zero at the start, but it helps us keep}
  50.         greenpunch := 0;
  51.         greenleftright := true;
  52.     end;                    {track of what is going on}
  53.  
  54.     procedure greenaction (var me: sprite);
  55.     begin
  56.         if greenpunch <> 0 then
  57.             begin
  58.                 me.mode := (me.mode + 1) mod 3;
  59.                 if me.mode = 0 then
  60.                     begin
  61.                         greenpunch := 0;
  62.                         if greenleftright = true then
  63.                             me.theface := greenwalkright[me.mode]
  64.                         else
  65.                             me.theface := greenwalkleft[me.mode];
  66.                     end
  67.                 else
  68.                     begin
  69.                         if greenleftright = true then
  70.                             me.theface := greenpunchright[me.mode]
  71.                         else if greenleftright = false then
  72.                             me.theface := greenpunchleft[me.mode];
  73.                     end;
  74.             end
  75.         else if greenpunch = 0 then
  76.             begin
  77.                 if greenleftright = true then
  78.                     me.theface := greenwalkright[me.mode]
  79.                 else
  80.                     me.theface := greenwalkleft[me.mode];
  81.                 if whatkeyhit = 1 then
  82.                     begin
  83.                         me.position.h := me.position.h - 10;
  84.                         me.mode := (me.mode + 1) mod 4;
  85.                         me.theface := greenwalkleft[me.mode];
  86.                         greenleftright := false;
  87.                     end
  88.                 else if whatkeyhit = 2 then
  89.                     begin
  90.                         me.position.h := me.position.h + 10;
  91.                         me.mode := (me.mode + 1) mod 4;
  92.                         me.theface := greenwalkright[me.mode];
  93.                         greenleftright := true;
  94.                     end
  95.                 else if (whatkeyhit = 3) and (greenleftright = true) then
  96.                     begin
  97.                         me.mode := 0;
  98.                         me.theface := greenpunchright[me.mode];
  99.                         greenpunch := 1;
  100.                     end
  101.                 else if (whatkeyhit = 3) and (greenleftright = false) then
  102.                     begin
  103.                         me.mode := 0;
  104.                         me.theface := greenpunchleft[me.mode];
  105.                         greenpunch := 1;
  106.                     end;
  107.             end;
  108.     end;
  109.  
  110.     procedure greenhit (var me, him: sprite);
  111.     begin
  112.         if (greenpunch = 1) and (me.mode = 1) then
  113.             begin
  114.                 playsound(true);
  115.                 if blueleftright = true then
  116.                     him.theface := bluehurtright
  117.                 else
  118.                     him.theface := bluehurtleft;
  119.                 bluelife := bluelife - 1;
  120.                 if bluelife = 0 then
  121.                     killsprite(him);
  122.             end;
  123.     end;
  124.  
  125.     procedure setupblueguy (var me: sprite);
  126.     begin
  127.         me.mode := 0;
  128.         bluepunch := 0;
  129.         blueleftright := false;
  130.     end;
  131.  
  132.     procedure blueaction (var me: sprite);
  133.     begin
  134.         if bluepunch <> 0 then
  135.             begin
  136.                 me.mode := (me.mode + 1) mod 3;
  137.                 if me.mode = 0 then
  138.                     begin
  139.                         bluepunch := 0;
  140.                         if blueleftright = true then
  141.                             me.theface := bluewalkright[me.mode]
  142.                         else
  143.                             me.theface := bluewalkleft[me.mode];
  144.                     end
  145.                 else
  146.                     begin
  147.                         if blueleftright = true then
  148.                             me.theface := bluepunchright[me.mode]
  149.                         else if blueleftright = false then
  150.                             me.theface := bluepunchleft[me.mode];
  151.                     end;
  152.             end
  153.         else if bluepunch = 0 then
  154.             begin
  155.                 if blueleftright = true then
  156.                     me.theface := bluewalkright[me.mode]
  157.                 else
  158.                     me.theface := bluewalkleft[me.mode];
  159.                 if whatkeyhit = 4 then
  160.                     begin
  161.                         me.position.h := me.position.h - 10;
  162.                         me.mode := (me.mode + 1) mod 4;
  163.                         me.theface := bluewalkleft[me.mode];
  164.                         blueleftright := false;
  165.                     end
  166.                 else if whatkeyhit = 5 then
  167.                     begin
  168.                         me.position.h := me.position.h + 10;
  169.                         me.mode := (me.mode + 1) mod 4;
  170.                         me.theface := bluewalkright[me.mode];
  171.                         blueleftright := true;
  172.                     end
  173.                 else if (whatkeyhit = 6) and (blueleftright = true) then
  174.                     begin
  175.                         me.mode := 0;
  176.                         me.theface := bluepunchright[me.mode];
  177.                         bluepunch := 1;
  178.                     end
  179.                 else if (whatkeyhit = 6) and (blueleftright = false) then
  180.                     begin
  181.                         me.mode := 0;
  182.                         me.theface := bluepunchleft[me.mode];
  183.                         bluepunch := 1;
  184.                     end;
  185.             end;
  186.     end;
  187.  
  188.     procedure bluehit (var me, him: sprite);
  189.     begin
  190.         if (bluepunch = 1) and (me.mode = 1) then
  191.             begin
  192.                 playsound(true);
  193.                 if greenleftright = true then
  194.                     him.theface := greenhurtright
  195.                 else
  196.                     him.theface := greenhurtleft;
  197.                 greenlife := greenlife - 1;
  198.                 if greenlife = 0 then
  199.                     killsprite(him);
  200.             end;
  201.     end;
  202.  
  203.     procedure bluebartask (var me: sprite);
  204.     begin
  205.         setrect(me.theface.sizerect, 0, 0, bluelife * 20, 20);
  206.     end;
  207.  
  208.     procedure greenbartask (var me: sprite);
  209.     begin
  210.         setrect(me.theface.sizerect, 0, 0, greenlife * 20, 20);
  211.     end;
  212.  
  213.     procedure setupsprite;
  214.         var
  215.             a: integer;
  216.     begin
  217.         getsound(1);
  218.         setrect(aa, 0, 0, 64, 64);
  219.         setrect(ab, 12, 0, 52, 64);
  220.         for a := 0 to 3 do
  221.             greenwalkright[a] := newface(a + 1, aa, ab);
  222.         for a := 0 to 3 do
  223.             greenwalkleft[a] := newface(a + 5, aa, ab);
  224.         for a := 0 to 2 do
  225.             greenpunchright[a] := newface(a + 9, aa, ab);
  226.         for a := 0 to 2 do
  227.             greenpunchleft[a] := newface(a + 12, aa, ab);
  228.         greenhurtright := newface(15, aa, ab);
  229.         greenhurtleft := newface(16, aa, ab);
  230.         for a := 0 to 3 do
  231.             bluewalkright[a] := newface(a + 17, aa, ab);
  232.         for a := 0 to 3 do
  233.             bluewalkleft[a] := newface(a + 21, aa, ab);
  234.         for a := 0 to 2 do
  235.             bluepunchright[a] := newface(a + 25, aa, ab);
  236.         for a := 0 to 2 do
  237.             bluepunchleft[a] := newface(a + 28, aa, ab);
  238.         bluehurtright := newface(31, aa, ab);
  239.         bluehurtleft := newface(32, aa, ab);
  240.         greenlife := 5;
  241.         bluelife := 5;
  242.         setrect(aa, 0, 0, 100, 20);
  243.         setrect(aa, 0, 0, 100, 20);
  244.         greenpowerbar := newface(33, aa, ab);
  245.         bluepowerbar := newface(34, aa, ab);
  246.         temp := NewSprite(1, 50, 215, 0, greenwalkright[0], @greenaction, @greenhit, @setupgreenguy);
  247.         temp := NewSprite(2, 400, 215, 0, bluewalkleft[0], @blueaction, @bluehit, @setupblueguy);
  248.         temp := NewSprite(0, 50, 300, 0, greenpowerbar, @greenbartask, nil, nil);
  249.         temp := NewSprite(0, 360, 300, 0, bluepowerbar, @bluebartask, nil, nil);
  250.     end;
  251.  
  252. begin
  253.     GRAFInit(1, 512, 342);
  254.     setupsprite;
  255.     repeat
  256.         l := tickcount;
  257.         getkey;
  258.         RunGRAF(1);
  259.         while l > tickcount - 10 do
  260.             ;
  261.     until button;
  262. end.